/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author frederic
 */
import java.io.*;

public class PersistenceMgr {
    
        private String nomFichierVehicules;
	
    
	public PersistenceMgr(String nomFichierVehicules) {
        this.nomFichierVehicules = nomFichierVehicules;
    }
	
	public Vehicule[] donneLesVehicules() {
        
        Vehicule[] vehicules = this.litFichierVehicule();
		
		return vehicules;
		
    }
    
   private Vehicule decodeLigne(String ligne) {       
        if (ligne == null || ligne.length() == 0) return null;

        String[] temp = ligne.split(";");

        if (temp.length != 6) return null;

        if ( temp[1].equals("1")) { 
            Vehicule vehicule = new Utilitaire(Integer.parseInt(temp[0]), temp[2],Integer.parseInt(temp[3]), temp[4], Double.parseDouble(temp[5] ));
                 
            return vehicule;
        }
        else if ( temp[1].equals("2")) {
            Vehicule vehicule = new Luxe(Integer.parseInt(temp[0]), temp[2],Integer.parseInt(temp[3]), temp[4], Double.parseDouble(temp[5] ));
                 
            return vehicule;
        }
        else if ( temp[1].equals("3")) {
            Vehicule vehicule = new Citadine(Integer.parseInt(temp[0]), temp[2],Integer.parseInt(temp[3]), temp[4]);
                 
            return vehicule;
        }
        return null;
   }
  
   private Vehicule[] litFichierVehicule() {
        
        Vehicule[] vehicules = new Vehicule[1000]; // ne fonctionnera que pour les fichiers de 1000 personnes maximum
        
        Vehicule temp = null;
        
        int i = 0;
        
        try {
            BufferedReader in = new BufferedReader(new FileReader(this.nomFichierVehicules));

            String str;
            while ((str = in.readLine()) != null) {                
                temp = this.decodeLigne(str);
                if (temp != null) {                    
                    vehicules[i] = temp;
                    i++;
                }
                
            }
            
            in.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

        Vehicule[] finalVehicules = new Vehicule[i];
        
        for (int j = 0; j < i ; j++) {
            finalVehicules[j] = vehicules[j];            
        }

        return finalVehicules;
        
    }

}
